package  
{	
	public class ConfigData
	{
		public static const GAME_TITLE:String = "Generations";
		public static const WIN_TEXT:String = "Congratulations!";
		public static const LOSE_TEXT:String = "Again?";
		public static const NUMBER_OF_GENERATIONS_TO_WIN:int = 5;
		
		public static const MIN_DELAY_BETWEEN_HEARTS:Number = 0.1; // hit this when death is close
		public static const DEFAULT_DELAY_BETWEEN_HEARTS:Number = 0.7; // use this when far from death (or not past adult age)
		public static const MIN_DISTANCE_TO_DEATH:Number = 20.0; // use min delay between hearts at this distance
		public static const MAX_DISTANCE_TO_DEATH:Number = 100.0; // use max delay between hearts at this distance
		public static const NUMBER_OF_HEARTS_TO_MAKE:int = 400; // enough to fill the screen!
		public static const HEARTS_FLOAT_TIME:Number = 2.0; // hearts will float around for this long before popping into place
		public static const HEART_LIFE_SPAN:Number = 1.6; // Make 0 for them to live forever!
		public static const BACKGROUND_COLOR:uint = 0xFFFFFFFF;
		public static const GRAVITY_ACCELERATION:Number = 450.0;
		
		public static const CAMERA_FOCUS_SPEED:Number = 120;
		public static const CAMERA_FOCUS_DEADZONE:Number = 10;
		public static const CAMERA_FOCUS_ON_BABY:Boolean = true;
		
		public static const GROUND_HEIGHT:Number = 60;
		
		public static const NO_AGING:Boolean = false; // debug-only giant hammer to disable all aging all the time
		
		public static const SCENERY_TIME_FACTOR:Number = 1/20.0; // multiply real-time by this factor to determine how fast time passes for the scenery
		
		public static const SECONDS_PER_DAY:Number = 85;
		//public static const SECONDS_PER_DAY:Number = 15;
		
		public static const AGE_1_INFANT:Number = 1.0;
		public static const AGE_2_TODDLER:Number = 2.0;
		public static const AGE_3_TEEN:Number = 3.0;
		public static const AGE_4_ADULT:Number = 4.0;
		public static const AGE_5_OLD_ADULT:Number = 5.0;
		public static const AGE_6_INVALID:Number = 6.0;
		public static const AGE_7_DEAD:Number = 7.0;
		
		public static const DELAY_BEFORE_FIRST_BABY:Number = 9.0; // do not advance time at all for the first X seconds of the game (make this number low to see aging faster!)
		public static const DEBUG_AGE_MULTIPLIER:Number = 1.0; // Raise this number to increase aging speed!!
		public static const MAX_AGE_DUE_TO_TIME:Number = 6.9;
		public static const MAKE_A_BABY_AGE:Number = 4.3;
		public static var AGES_TO_AGE_FACTORS:Array = [
			[], // dummy row so we can use age boundries as indices into this array
			// the divisor effectively sets how many seconds a human will be at that age
			[1/9.0], // AGE_1_INFANT
			[1/10.0], // AGE_2_TODDLER
			[1/11.0], // AGE_3_TEEN
			[1/30.0], // AGE_4_ADULT
			[1/15.0], // AGE_5_OLD_ADULT
			[1/10.0], // AGE_6_INVALID
			[1/1.0], // AGE_7_DEAD
		];
		
		public static var AGE_LIMITS:Array = [
			// each entry is an array of [accelX, maxSpeedX, jumpVelocity]
			[],// dummy row so we can use age boundries as indices into this array
			[0.0, 0.0, 0.0], // AGE_1_INFANT
			[120.0, 40.0, 0.0], // AGE_2_TODDLER
			[260.0, 60.0, 150.0], // AGE_3_TEEN
			[240.0, 80.0, 200.0], // AGE_4_ADULT
			[160.0, 40.0, 130.0], // AGE_5_OLD_ADULT
			[40.0, 10.0, 0.0], // AGE_6_INVALID
			[0.0, 0.0, 0.0], // AGE_7_DEAD
		];
		
		// Human Visual Constants
		public static const INITIAL_HUMAN_ATTENTION_GRABBING_DROP_HEIGHT:int = 16;
		public static const SKIN_COLOR:int = 0xFFDDBB99;
		public static const OLD_SKIN_COLOR:int = 0xFFBBBBBB;
		public static const INVALID_SKIN_COLOR:int = 0xFF777777;
		public static const HUMAN_SHOE_COLOR:int = 0xFF885522;
		public static const HUMAN_DIAPER_COLOR:int = 0xFFFFFFFF;
		public static const HUMAN_PANTS_COLOR:int = 0xFF0000FF;
		public static const HUMAN_SHIRT_COLOR:int = 0xFFFF0000; // used first, then it's picked from list below
		public static var AVAILABLE_SHIRT_COLORS:Array = [0xFFFF2B2B, 0xFF39DB39, 0xFF3A3AFF, 0xFFFFE647, 0xFF41D3D3, 0xFFFF47FF, 0xFFCC42FF];
		public static var AVAILABLE_HEART_COLORS:Array = [0xFFFF6B86, 0xFF9CFF75, 0xFF7777FF, 0xFFFFE875, 0xFF68FFF4, 0xFFFF9EFF, 0xFFD272FF];
		public static var HUMAN_HAIR_COLOR_ARRAY:Array = new Array(0x00000000, 0xFF774411, 0xFF774411, 0xFF774411, 0xFFAABBAA, 0xFFEEEEEE );
		public static const HUMAN_WIDTH:Number = 10.0;
		public static const HUMAN_MIN_HEIGHT:Number = 10.0;
		public static const SHOE_HEIGHT:Number = 2.0/5.0;
		public static const DIAPER_HEIGHT:Number = 3.0/5.0;
		public static const PANTS_MIN_HEIGHT:Number = 3.0/5.0;
		public static const SHIRT_MIN_HEIGHT:Number = 2.5/5.0;
		public static const HUMAN_HAIR_HEIGHT:Number = 2.0/5.0;
		public static const CLOTHING_AGE_MULTIPLER:Number = 0.5;
		public static const TOMBSTONE_HEIGHT:Number = 11.0; // based on pixel height of tombstone graphic
		
		// Vars
		public static var musicMuted:Boolean = false;
		public static var MIN_MILLISECONDS_BETWEEN_PUTDOWN_PICKUP:uint = 100;
		public static var CARRIED_INFANT_X_OFFSET:int = 2;
		public static var CARRIED_INFANT_Y_OFFSET:int = 7;
		
		// Tombstone HUD vars
		public static const LARGE_TOMBSTONE_Y:int = 200;
		public static const WIDTH_OF_LARGE_TOMBSTONE:int = 33;
		public static var HUD_TEXT_OFFSETS:Array = [
			0, // dummy entry so we can index into this array by length of the text
			-4, // for text of length 1
			-8, // for text of length 2
			-10, // for text of length 3
		]
	}
}